Computer software applications are provided to users according to various different models. With a packaged application model, applications are executed directly by a local machine. Executables and other data or files making up the application are installed to the local machine from a network or from a disk. Once installed, the application executes locally and typically has access to the resources of the local machine, including local data. Data processed by the application is also stored locally, either at the local machine itself or at other machines that are part of a common secured network (e.g., a company or organizational network). Packaged applications are local machine specific. Accordingly, an organization must purchase a license for each local machine that will execute the application regardless of the number of users or the frequency of use. Also, any updates, improvements, bug-fixes, or new versions of the packaged applications must be directly installed to each local machine. This limits the degree to which packaged applications can be practically maintained and upgraded.
Cloud computing provides an alternative application hosting paradigm that is often called software-as-a-service (SaaS). According to cloud computing or SaaS techniques, software applications are executed by remote servers. Local machines access the remote servers, and the applications, via a network, such as the Internet. The local machines execute a client interface (e.g., either a standard web browser or a dedicated client program that gives the local machines access to the remotely executed SaaS application). Due to the nature of SaaS, changes made to an application at the remote servers are distributed to all local users and machines without the need to specifically load new data files to each local machine. This makes it easier for providers and developers to generate and distribute new features as well as standard bug-fixes and other improvements. Because SaaS applications are hosted remotely, however, it is necessary for data processed by the application to be either transmitted to and/or accessible to the remote servers, which are located outside of the local machine and usually outside of a secure network. This creates a strong disincentive for using cloud computing and/or SaaS for processing that involves sensitive data. Also, depending on the implementation, SaaS applications require the local execution of dedicated plug-ins in order to access local resources such as printers, speakers, etc. This further complicates the use of SaaS applications in some environments.